Use of the World Wide Web (“Web”) to gain access to information and interact with other individuals and organizations is proliferating. Through the Web, mainstream users may obtain information about almost anything and procure an immense range of goods and services. The Web includes a network of servers on the Internet. The servers communicate by using the Hypertext Transfer Protocol (HTTP) with clients that are controlled by users, and deliver files referred to as “pages” to the clients. The pages typically contain code written in the Hypertext Markup Language (HTML). The code within a page may define a user interface, which is typically a graphical user interface (“GUI”).
The pages are delivered to clients that request them. Typically, a client retrieves a page using a computer device that runs a client program, referred to as a browser. A browser is a combination of software and hardware that is capable of using the HTTP protocol to retrieve data from a server connected to the Web. When a browser running on a client receives a page containing code that conforms to HTML, the browser decodes the page. The HTML code may define a GUI. Thus, when a browser decodes a page, it generates the GUI. The user interacts with the GUI to enter data, such as text data entered through a keyboard, which the client transmits back to the server.
One of the long standing challenges for those who develop user interfaces is displaying multiple types of information about a large set of items within a single display in an effective way. For example, a user may access a page over a web to obtain information about a large set of books on a general topic. One type of information to display is the book name, another type of information is book categories, and the association between the books and the categories. The phrases “displayed in a page” and “displayed within a page” are used to conveniently express that information is displayed in the display area of a browser generated in response to decoding the page. Further, a page may be referred to as performing some action, such as displaying items of information. This too is a convenient way of expressing that the browser is performing the action in response to decoding or interpreting the page.
An approach that effectively presents multiple types of information about large sets of items in a single page may have the following traits. First, the page allows a user to select categories of interest and to display the items in a manner that visually associates the items with the categories of interest. Second, the items can be associated with multiple categories. The ability to associate items with multiple categories is important because, if an item can only be associated with one category, then whether or not a user can spot an item listed in a page may depend on the selection of the one category the user interface has associated with the item. Third, the GUI should quickly respond to user requests for information. Fourth, the information should be displayed in a non-intrusive manner to avoid cognitive overload, which can cause a user to “lose their place” or “train of thought.”
The conventional systems for presenting large list of items in a page do not possess all these traits. One such conventional approach is the tree view approach. Under the tree view approach, categories are portrayed as nodes of branches in a graphical tree. To see items that belong to a particular category, a user selects the category, and the GUI expands that branch of the tree to display the items in the category. If there are more items in a category than can fit within the display of a page, then a user must interact with the browser to scroll down through the display of the list of items. As a result, the name of the category may “roll off” the display. Users may need to view the category because they may mentally lose track of what category they are currently viewing. Rather than simply shifting the focus of their eyes to a different location within the page to view the name of the category, a user must interact with the GUI to bring the category into view.
In some implementations of the tree view, only one category at a time may be expanded to display the items the category contains. Furthermore, expanding a branch may entail refreshing the browser, that is, reloading another page that displays the selected branch. Because the page may be reloaded over the network, access and display of the page is subjected to network delay.
Another conventional approach is to display search results using the dynamic web page approach. Under this approach, a browser executing code in a page elicits requests from a user to display items according to criteria selected by the user. In response to the request, the browser displays the information within the display of the browser. Information about the items is obtained by forming queries based on the user selected criteria, and then issuing queries over a network to a database server or other data source (e.g. web server). Query results are returned in response. The results are used to organize and highlight information about the set of items.
The dynamic web page approach has numerous disadvantages. The response between receiving a user request and displaying the information requested may be undesirably long for a variety of reasons. First, the response may be delayed by network congestion and processing needed to execute the query and generate the page. In some implementations of the dynamic web approach, a page is generated in response to each user request. Thus a response may be further delayed by the time needed to download another page to the borrower and display it. Furthermore, the database server may be inaccessible because of network problems or inability to cross a firewall.
Finally, other implementations of the dynamic web page approach may rely on client-side execution of Java. Such implementations depend on downloading a web page, a Java applet, and one or more data files. Security mechanisms implemented on most browsers that execute Java prevent access to data files that reside on the client.
Another conventional approach is the static web page approach. Static pages are created and stored at an HTTP server prior to a request from a browser for the page. In response to a request from a browser, a static HTML page is merely read from storage and transmitted to the requesting browser. Under the static web page approach, multiple static pages are generated, each showing a predetermined arrangement of information about a set of items. The disadvantages of this approach include the delay incurred in reloading and displaying the pages, and the storage space consumed to store pages representing different predetermined arrangements.
Based on the foregoing, it clearly desirable to provide a system for displaying multiple types of information about a large set of items in an effective way within a single page that avoids the pitfalls of a conventional system.